草庐IT

Android AsyncTask 内存泄漏

全部标签

ruby - 方法调用中是否有内存约定?

我想避免在方法调用中重新计算一个值。到目前为止,我一直在这样做:defsome_method@some_method||=begin#lot'sofcodeendend但它最终变得非常丑陋。在一些代码中,我看到了如下内容:defsome_method@some_method||=some_method!endprivatedefsome_method!#lot'sofcodeend我不喜欢最后的爆炸(!),所以我想到了这个:defsome_method@some_method||=_some_methodendprivatedef_some_method#lot'sofcodeend在

ruby - 如何在 Ruby 中内存可能返回 true、false 或 nil 的方法?

显然||=不会起作用defx?@x_query||=expensive_way_to_calculate_xend因为如果结果为false或nil,那么expensive_way_to_calculate_x将被反复运行。目前我知道的最好方法是将值放入数组:defx?return@x_query.firstif@x_query.is_a?(Array)@x_query=[expensive_way_to_calculate_x]@x_query.firstend是否有更传统或更有效的方法来做到这一点?更新我意识到除了false之外,我还想记住nil-这一直追溯到https://rail

ruby-on-rails - 我怎样才能找到 Heroku 上的内存泄漏?

我有一个Rails3.2.8应用程序在HerokuCedar上运行,使用Ruby1.9.3。该应用程序启动时运行良好,但在连续使用一天左右后,我开始在我的日志中看到R14错误。一旦出现内存错误,它们就永远不会消失,即使应用闲置几个小时也是如此。垃圾收集器不应该过一段时间就清理不用的对象,减少内存负载吗?这似乎在Heroku上没有发生。通常,在运行一些包含几千行数据的报告后,内存使用量开始逐渐增加,尽管结果是分页的。如何找到内存泄漏?像bleak_house这样的插件已经过时或不能在Heroku环境中正常运行。我可以调整GC设置以使其更具攻击性吗? 最佳答案

ruby-on-rails - 找到Ruby on Rails内存泄漏的任何好方法吗?

我的项目正在发生内存泄漏,部署后,它的内存在10分钟内从500MB增加到1800MB。我试过很多工具,但没有一个是好用的。我使用了jprofiler,它显示了调用堆栈,内存分配,哪个类/方法被调用过多…以图表的形式,非常容易阅读和分析。我真的很喜欢这个。这样地:像这样:我已经找到这个工具:https://github.com/tenderlove/heap-analyzer,但我还没有使用。那么,有什么好的方法/工具可以找到ruby/rails内存泄漏吗?我试过mini_profiler,但没有达到预期的效果。谢谢! 最佳答案 您还

ruby-on-rails - 为什么 ruby​​ 中的内存分析如此困难?

或者更确切地说,为什么没有更好的工具来分析ruby​​中的内存,特别是Rails应用程序?最近,我们的Rails应用程序(托管在heroku上)开始在workerdynos中发现大量R14错误。这意味着我们的内存不足。将测功机提高到2倍(512mb->1GB)只能暂时缓解问题,让我相信某处存在内存泄漏。自然地,我的下一步是找到一个可以帮助我发现泄漏源的良好分析工具。也许我只是不知道可用的工具,或者我只是不知道如何使用我拥有的工具。我的愿望是我可以安装一个gem,然后运行关于内存使用统计的报告。由于我的内存问题与运行延迟作业的workerdynos隔离,因此点击端点获取报告并不可行。我看

ruby - 为什么这个 Ruby 程序不将堆内存返回给操作系统?

我试图了解从Ruby堆分配的内存何时返回给操作系统。我知道Ruby永远不会返回分配给它的堆内存,但我仍然不确定堆外内存的行为。即那些不适合40字节RVALUE的对象。考虑以下分配一些大字符串然后强制进行主要GC的程序。require'objspace'STRING_SIZE=250defprint_stats(msg)puts'-------------------'putsmsgputs'-------------------'puts"RSS:#{`ps-eorss,pid|grep#{Process.pid}|grep-vgrep|awk'{print$1,"KB";}'`}"p

ruby-on-rails - 何时在 Ruby on Rails 中使用内存

2008年7月中旬,Memoization被添加到Rails核心。用法演示是here.关于何时应该内存方法,以及每个方法的性能影响,我还没有找到任何好的例子。Thisblogpost,例如,建议通常根本不应该使用内存。对于可能具有巨大性能影响的内容,除了提供简单教程之外似乎没有其他资源。有没有人见过在自己的项目中使用memoization?哪些因素会让您考虑内存方法?在我自己做了更多研究之后,我发现在Rails核心中使用记忆化的次数非常多。这是一个例子:http://github.com/rails/rails/blob/1182658e767d2db4a46faed35f0b1075

ruby - 你有什么策略来保持低内存使用率?

Ruby真的很耗费内存——但也值得每一点。您如何保持低内存使用率?您是避免使用大字符串并改用较小的数组/散列,还是让垃圾收集器完成这项工作对您来说没有问题?编辑:我找到了一篇关于这个主题的好文章here-古老但仍然有趣。 最佳答案 我发现Phusion的RubyEnterpriseEdition(主线Ruby的一个分支,垃圾收集功能得到了很大改进)在内存使用方面产生了巨大的变化......此外,它们还非常容易安装(和删除),如果您发现需要)。您可以在theirwebsite上找到更多信息并下载。.

ruby - Sidekiq 在工作人员完成后不释放内存

我有大约6个Sidekiqworker执行JSON爬行。根据端点的数据集大小,它们在1分钟到4小时之间完成。特别是,观看需要4小时的长视频,我发现随着时间的推移,内存有非常轻微的增加。这不是问题,直到我想再次安排相同的worker作业。内存不会被释放并堆积起来,直到我遇到LinuxOOMKiller,它摆脱了我的Sidekiq进程。内存泄漏?我观察了ObjectSpace中不同对象的数量:ObjectSpace.each_object.inject(Hash.new(0)){|count,o|count[o.class]+=1}那里并没有真正增加,哈希集、数组等保持不变,垃圾收集器清除

ruby - 哈希或其他对象的内存大小?

在Ruby1.9.3中以字节为单位获取给定散列(或任何对象)大小的最佳方法是什么?“FindnumberofbytesaparticularHashisusinginRuby”的解决方案在1.9.3中似乎无效,因为memsize_of不在ObjectSpace的文档中. 最佳答案 ObjectSpace.memsize_ofdoeswork在1.9.3中,记录与否:putsRUBY_VERSION#=>1.9.3require'objspace'pObjectSpace.memsize_of("a"*23)#=>23pObjectS